1. Field of the Invention
This invention relates broadly to telecommunications. More particularly, this invention relates to highly efficient error correction of GFP superblocks.
2. State of the Art
The Synchronous Optical Network (SONET) or the Synchronous Digital Hierarchy (SDH), as it is known in Europe, is a common telecommunications transport scheme. SONET was designed in the early 1980s to accommodate a plurality of time division multiplexed continuous signals such as T-1 or E-1 signals. T-1/E-1 signals were designed in the 1960s to carry a plurality of digitized audio (telephone) signals from one telephone company office (switch) to another.
Developed in the early 1970's, ETHERNET was designed primarily to allow multiple personal computers to share a single laser printer. Although ETHERNET has gone through many changes since the first version was used in 1973, it is still fundamentally not synchronous. Unlike SONET/SDH which was developed to carry many continuous streams of data multiplexed in a regularly occurring frame of fixed length, ETHERNET was designed to carry discontinuous data streams in randomly occurring packets of widely varying length. A word used to describe this nature of ETHERNET is “bursty”. In addition to ETHERNET, some other networking protocols have been developed for storage area networks (SANs). These other protocols include Fiber Channel, ESCON (enterprise system connection), and FICON (fiber connection). They are similar to ETHERNET in that they are bursty.
For many years, it has been recognized that it would be desirable to transmit ETHERNET packets over long distances using a SONET/SDH network. However, because of the fundamental differences between synchronous frames and asynchronous packets, some mechanism was needed to encapsulate the ETHERNET data within a SONET/SDH frame. The challenge in doing this is to fill the SONET frame with as much ETHERNET data as possible so that bandwidth is not wasted while at the same time providing minimal latency (time data waits in a buffer before being transmitted). One of the latest methods for accomplishing this task is called the Generic Framing Procedure (GFP). GFP is “generic” because it is designed to transport any signal including ETHERNET, Fiber Channel, ESCON, FICON, and others over fixed data rate optical channels in a SONET/SDH network or OTN (optical transport network).
GFP is used in conjunction with other SONET/SDH specifications such as Virtual Concatenated Groups (VCGs) and Link Capacity Adjustment Scheme (LCAS) to map variable length packets into “containers” (also known as “tributaries”) of a SONET/SDH frame.
There are currently two modes of mapping data into a GFP frame: frame mapped GFP (GFP-F) and transparent mapped GFP (GFP-T). GFP-F is used for ETHERNET (some versions but not all) and other protocols where the entire client frame is mapped into a single GFP frame. GFP-T facilitates the transport of block coded signals such as those of Fiber Channel, ESCON, FICON, and Gigabit ETHERNET, which also require very low transmission latency.
Prior art FIG. 1 illustrates the fields of a GFP frame. The two basic parts of the frame are the core header (4 bytes) and the payload area (variable length up to 65535 bytes). The core header includes a payload length indicator (PLI, 2 bytes) and the core header error correction (cHEC) code (2 bytes). The payload area includes the payload header (4 to 64 bytes), the payload information field (up to 65531 bytes), and an optional payload FCS (4 bytes). The payload header includes the type (4 bytes) and an extension header identifier (0 to 60 bytes).
The present invention is concerned with GFP-T. As mentioned above GFP-T facilitates the transport of block coded signals which also require very low transmission latency. These signals are encoded by clients with an 8B/10B block code. This code is used to communicate data and control information. More particularly, the 8-bit data values are mapped (encoded) into a 10-bit “transmission character”. The code assignment is arranged so that the number of 1s and 0s transmitted on the line remains balanced. This increases the number of line transitions, thereby facilitating PLL synchronization. It also maintains DC balance over time. In addition, twelve of the 10-bit codes are reserved for use as control codes so that the data source may signal the data sink.
In order to transport 8B/10B encoded signals over the SONET/SDH network, GFP-T decodes the 8B/10B characters into 8-bit data characters and control codes. Eight of the decoded characters are mapped into the eight payload bytes of a 64B/65B code. This is shown by example in prior art FIG. 2. The (leading) flag bits of the 64B/65B code (shown as octet L in FIG. 2) indicate whether the 64B/65B block includes any control codes, i.e. a flag=1 indicates that the octet in the corresponding position of the next eight octets is a control code. In a GFP-T frame, after the 4 byte payload header, the payload area is filled with a plurality of “superblocks”. Each superblock includes eight 64B/65B blocks and one 16-bit CRC, i.e. 67 bytes. The last octet of the superblock before the CRC includes eight flag bits. This is often referred to as the “superblock control byte”. Prior art FIG. 3 illustrates the mapping of the superblock.
In order to address the physical properties of the transport medium and to aid in maintaining synchronization, GFP frames are scrambled by a self-synchronous scrambler. The scrambler uses a polynomial of x43+1. The scrambler takes each bit of the payload area (including the superblock CRC) and exclusively ORs it with the scrambler output bit that precedes it by 43 bit positions. The scrambler state is retained between successive GFP frames, making it more difficult for a user to purposely choose a malicious payload pattern (e.g. one which would cause loss of synchronization). The superblock CRC is calculated prior to scrambling and is checked at the decoder after descrambling. An unfortunate drawback of this scrambling technique is that each transmission error produces a pair of errors (43 bits apart) in the descrambled data stream. The CRC, therefore, must be able to correct these two errors. The recommended CRC generator polynomial generates a superblock CRC which can detect three bit errors, correct single bit errors, and correct double bit errors spaced 43 bits apart. To accomplish this, the syndromes for single bit errors and double bit errors spaced 43 bits apart are all unique.
When demapping a GFP-T signal, the superblock control byte must be “realigned” (the flag bits moved back to their original leading bit locations) before the 64B/65B code can be mapped back into 8B/10B code. Before this is done, the superblock CRC is used to detect and possibly correct bit errors in the superblock. The recommended demapping procedure is detailed in ITU specification G.7041, the complete disclosure of which is hereby incorporated herein by reference.
The following description is taken from the G.7041 specification. The 16 error control bits in a superblock contain a CRC-16 error check code over the 536 bits in that superblock. If the demapper detects an error, it should output either 10B error characters or unrecognized 10B characters in place of all of the client characters contained in that superblock. This replacement guarantees that the client receiver will be able to detect the presence of the error. The generator polynomial for the CRC-16 is G(x)=x16+x15+x12+x10+x4+x3+x2+x+x0 with an initialization value of zero, where x16 corresponds to the MSB and x0 to the LSB. The superblock CRC is generated by the source adaptation process using the following steps:
1. The first 65 octets of the superblock are taken in network octet order, most significant bit first, to form a 520-bit pattern representing the coefficients of a polynomial M(x) of degree 519.
2. M(x) is multiplied by x16 and divided (modulo 2) by G(x), producing a remainder R(x) of degree 15 or less.
3. The coefficients of R(x) are considered to be a 16-bit sequence, where x15 is the most significant bit.
4. This 16-bit sequence is the CRC-16.
Single error correction is also possible with this CRC-16. However, since the sink adaptation process performs the CRC-16 check after the payload descrambling is performed, the error correction circuit should account for single bit errors as well as double errors spaced 43 bits apart coming out of the descrambler.
The sink adaptation process performs steps 1-3 in the same manner as the source adaptation process. In the absence of bit errors, the remainder shall be 0000 0000 0000 0000.
Though not stated in the G.7041 specification, when the remainder is not zero it is referred to as a “syndrome”. Syndromes can be used to detect the location of a bit error in conjunction with a syndrome table which has a 1:1 correspondence with each bit in the payload.
The G.7041 recommendation has several disadvantages. Processing an entire superblock according to the recommendation requires a 536-bit datapath and a relatively large amount of storage space which complicates implementation on a chip. It is also difficult to support high speed applications when processing all sixty-seven bytes at one time. The physical size of the logic introduces latency.
Although parts of the G.7041 recommendation can be ignored while still maintaining interoperability, there are several issues which cannot be ignored. These issues include the following: the flag byte (which is the last byte before the FCS bytes in the superblock) must be corrected before processing any of the other bytes in the superblock; double bit error correction requires that errors be correctable for bits which are 43 bits apart; and there needs to be an indication of whether a detected error has been corrected.